﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net.Mail;
using System.Net;

namespace WeberMadeiras
{
    public static class Email
    {

        ///Como enviar emails na locaweb
        ///http://wiki.locaweb.com.br/pt-br/Envio_de_e-mails_via_.NET_utilizando_o_System.Net.Mail
        /// <summary>
        /// Envia um e-mail
        /// </summary>
        /// <param name="titulo">Título do e-mail</param>
        /// <param name="mensagem">Mensagem</param>
        /// <param name="emailHtml">Informa se o corpo do e-mail é um HTML. True=HMTL | False=Texto</param>
        /// <param name="caminhoAnexo">Arquivo em anexo</param>
        /// <param name="emailTo">E-mail(s) do(s) destinatário(s)</param>
        /// <param name="emailFrom">E-mail(s) do(s) remetente(s)</param>
        public static void EnviarEmail(string titulo, string mensagem, bool emailHtml, string caminhoAnexo, string[] emailTo, string emailFrom)
        {
            try
            {
                // Cria os objetos para envio de e-mail
                MailMessage email = new MailMessage();
                email.Priority = System.Net.Mail.MailPriority.Normal;
 
                MailAddress fromAddress = new MailAddress(emailFrom, titulo);

                // Atribui à propriedade From o valor do Remetente
                email.From = fromAddress;

                // Destinatário
                email.To.Add(emailTo[0]);

                // Caso haja mais de um destinatário, envia o e-mail como cópia
                if (emailTo.Length > 1)
                {
                    // Guarda uma cópia do e-mail enviado
                    //Email.CC.Add(fromAddress);

                    for (int index = 1; index < emailTo.Length; index++)
                    //foreach (string email in emailTo)
                    {
                        // Adiciona destinatário com Cópia
                        if (!String.IsNullOrEmpty(emailTo[index]))
                        {
                            email.CC.Add(emailTo[index]);
                        }
                    }
                }

                // Verifica se há um arquivo a ser anexado
                if (!string.IsNullOrEmpty(caminhoAnexo))
                {
                    // Define o arquivo anexo
                    Attachment attachment = new Attachment(caminhoAnexo);
                    email.Attachments.Add(attachment);
                }

                //Atribui ao método Subject o assunto da mensagem
                email.Subject = titulo;
                //Define o formato da mensagem que pode ser Texto ou Html
                email.IsBodyHtml = emailHtml;
                //Atribui ao método Body a texto da mensagem
                email.Body = mensagem;

                
                String senha = ConfigurationManager.AppSettings["SenhaEmailFrom"].ToString();
                String emailRemetente = ConfigurationManager.AppSettings["EmailFrom"].ToString();
                System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(emailRemetente, senha);
                //Cria objeto com os dados do SMTP
                System.Net.Mail.SmtpClient objSmtp = new System.Net.Mail.SmtpClient();

                //Alocamos o endereço do host para enviar os e-mails  
                objSmtp.UseDefaultCredentials = false;
                objSmtp.Credentials = credentials;

                objSmtp.Host =  ConfigurationManager.AppSettings["HostServidorSmtp"];
                objSmtp.Port = int.Parse(ConfigurationManager.AppSettings["PortaServidorSmtp"]);;
                objSmtp.EnableSsl = true;
                
                //Caso utilize conta de email do exchange da locaweb deve habilitar o SSL
                //email.EnableSsl = true;
                // Envia a mensagem baseado nos dados do objeto Email
                objSmtp.Send(email);

                
            }
            catch (Exception exception)
            {
                throw exception;
            }
        }
    }
}
